package com.webauto.test_case;

import org.openqa.selenium.By;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import com.webauto.asserts.assertUtil;
import com.webauto.data_driver.CaseUtil;
import com.webauto.data_driver.ExcelUtil;
import com.webauto.log.Log;
import com.webauto.po.PO;
import com.webauto.pojo.Case;
import com.webauto.selenium.FindElementUtil;
import com.webauto.selenium.ManagerUtil;
import com.webauto.selenium.SeleniumDriverUtil;
import com.webauto.selenium.SwitchUtil;
import com.webauto.selenium.UseElementUtil;

public class Test5_BSInformation_Add extends BaseCase{
	/**
	 * PS:测试方法
	 * 
	 * @param testNum        测试编号
	 * @param caseNum        用例编号
	 * @param caseName       测试名称
	 * @param caseType       测试类型
	 * @param testData       测试数据
	 * @param expectedResult 预计结果
	 * @param actualResult   实际结果
	 */
	@Test(dataProvider = "datas")
	public void bsInformation_Add(String testNum, String caseNum, String caseName, String caseType, String testData,
			String checkPoint, String expectedResult, String actualResult) {
		PO navigation = new PO("导航栏");
		navigation.click("白事网资讯");
		navigation.click("子集白事网资讯");
		PO bsInformation = new PO("白事网资讯",testData);
		bsInformation.switchToFrame("白事网资讯iframe");
		bsInformation.click("添加按钮");
		bsInformation.switchToFrame("添加窗口iframe");
		bsInformation.sendKeys("标题输入框", "标题");
		bsInformation.sendKeys("首图上传按钮", "首图");
		bsInformation.selectByVisibleText("首页展示选项", "首页展示");
		bsInformation.selectByVisibleText("展示形式选项", "展现形式");
		bsInformation.richTextSendKeys("咨询内容富文本框", "资讯内容");
		bsInformation.sendKeys("排序码输入框", "排序码");
		bsInformation.click("提交按钮");

		// 断言结果
		boolean flag = false;
		String result = null;
		try {
			if ("1".equals(caseType)) {
				SwitchUtil.switchToFrameByParent();
				// 获取检查点选择器对象
				By checkPointBy = bsInformation.getByByCheckPoint(checkPoint);
				// 获取检查元素的文本
				result = UseElementUtil.getText(checkPointBy);
				// 断言
				flag = assertUtil.check(result, expectedResult);
			} else if ("0".equals(caseType)) {
				// 获取检查点选择器对象
				By checkPointBy = bsInformation.getByByCheckPoint(checkPoint);
				// 获取检查元素的文本
				result = UseElementUtil.getText(checkPointBy);
				// 断言
				flag = assertUtil.check(result, expectedResult);
			} else if ("-1".equals(caseType)) {
				// 返回父级iframe
				SwitchUtil.switchToFrameByParent();
				// 获取检查点选择器对象
				By checkPointBy = bsInformation.getByByCheckPoint(checkPoint);
				// 获取检查元素的文本
				result = UseElementUtil.getText(checkPointBy);
				// 断言
				flag = assertUtil.check(result, expectedResult);
			} else {
				throw new AssertionError("+++测试类型不存在,测试类型:[" + caseType + "]+++");
			}
		} catch (AssertionError e) {
			throw new AssertionError("+++用例" + caseNum + "执行未通过," + e.getMessage() + "+++");
		} finally {
			CaseUtil.writeData(flag, "用例", caseNum, "ActualResult", result);
		}
	}

	/**
	 * PS:数据提供者
	 * 
	 * @return 数据二维数组,Test方法会按照数组数量进行多次测试
	 */
	@DataProvider(name = "datas")
	public Object[][] datas() {
		Object[][] datas = CaseUtil.getExcelEntity("testNum", "test-005", ExcelUtil.cases, ExcelUtil.casefields,
				Case.class);
		return datas;
	}
}
